home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 4.1 KB | 127 lines |
- 10 CLS:SCREEN 0,0,0:WIDTH 40:LOCATE 17,13:PRINT "DECISION MAKER":LOCATE 24,1
- 20 'DECISION MAKER BY PHIL FELDMAN AND TOM RUGG
- 40 'NOT FOR SALE
- 100 ON ERROR GOTO 1000
- 110 DIM F$(20),L$(20),F(20),M(20,20),V(20),Z(20)
- 120 PRINT "I CAN HELP MAKE DECISIONS BY CHOOSING":PRINT "THE BEST OPTION OUT OF SEVERAL "
- 122 PRINT "ALTERNATIVES. ALL I NEED TO DO IS":PRINT "ORGANIZE INFORMATION YOU ALREADY HAVE."
- 124 PRINT:PRINT "WHICH OF THESE BEST DESCRIBES THE":PRINT "DECISION YOU HAVE TO MAKE ?":PRINT
- 140 PRINT "1-CHOOSE AN ITEM"
- 150 PRINT "2-CHOOSE A COURSE OF ACTION"
- 160 PRINT:INPUT "WHICH TYPE (1 OR 2) IS APPLICABLE: ",A
- 170 PRINT:IF A<1 OR A>2 THEN GOTO 160
- 175 IF A=2 THEN GOTO 190
- 180 PRINT:PRINT "NAME THE ITEM YOU NEED TO CHOOSE:":INPUT "",S$
- 184 IF LEN(S$)<20 THEN GOTO 200
- 186 GOSUB 910:GOTO 180
- 190 S$="COURSE OF ACTION"
- 200 CLS:PRINT:PRINT "I WILL NOW NEED A LIST OF EACH ":PRINT S$;" THAT YOU ARE CONSIDERING."
- 210 PRINT "PLEASE INPUT THEM ONE AT A TIME.":PRINT "THE ORDER IS OF NO IMPORTANCE."
- 220 PRINT:PRINT "HOW MANY ARE THERE ALTOGETHER":INPUT "(LIMIT 19):",A
- 230 IF A>1 AND A<21 THEN GOTO 310
- 240 GOSUB 560:GOTO 220
- 310 LO=A:FOR I=1 TO LO:PRINT
- 314 PRINT "NUMBER ";I;", PLEASE: ";:INPUT "",L$(I):IF LEN(L$(I))<20 THEN GOTO 320
- 316 GOSUB 910:GOTO 314
- 320 NEXT I:CLS:PRINT
- 330 PRINT "O.K. THIS IS THE LIST.":PRINT
- 340 FOR I=1 TO LO:LOCATE ,3:PRINT I;" ";L$(I):NEXT I
- 345 PRINT:GOSUB 900
- 350 IF A$="N" THEN GOTO 200 ELSE IF A$<>"Y" THEN GOTO 345
- 360 CLS:PRINT:PRINT "O.K., HOW MANY DIFFERENT FACTORS ARE":PRINT "IMPORTANT TO YOU IN CHOOSING A "
- 365 PRINT S$;:INPUT " (LIMIT 19):",A
- 370 IF A>1 AND A<21 THEN GOTO 400
- 380 GOSUB 560:GOTO 360
- 400 FO=A:PRINT:PRINT "I NEED A LIST OF EACH OF THESE."
- 410 FOR I=1 TO FO:PRINT
- 412 PRINT "FACTOR NUMBER";I;": ";:INPUT "",F$(I):IF LEN(F$(I))<20 THEN NEXT I:GOTO 420
- 415 GOSUB 910:GOTO 412
- 420 CLS:PRINT:PRINT "LOOK AT THE LIST OF FACTORS YOU HAVE":PRINT "PROVIDED AND DECIDE WHICH IS THE MOST"
- 430 PRINT "IMPORTANT.":PRINT
- 440 FOR I=1 TO FO:LOCATE ,5:PRINT I;" ";F$(I):NEXT I
- 450 PRINT:PRINT "INPUT NUMBER OF MOST IMPORTANT FACTOR"
- 455 INPUT "(OR INPUT 0 TO CHANGE THE LIST):",A
- 460 IF A=0 THEN GOTO 360
- 470 IF A<1 OR A>FO THEN GOTO 450
- 480 F2=A:PRINT
- 490 PRINT "O.K. SUPPOSE WE IMAGINE A SCALE OF":PRINT "IMPORTANCE THAT RANGES FROM 0 TO 10."
- 500 PRINT F$(F2);" THEN HAS A VALUE OF":PRINT "10, IT BEING THE MOST IMPORTANT TO YOU."
- 510 PRINT "ON THIS SCALE, WHAT VALUE WOULD EACH OF"
- 520 PRINT "THE OTHER FACTORS HAVE (FRACTIONAL"
- 525 PRINT "VALUES ARE PERMISSABLE) ?"
- 530 PRINT:FOR I=1 TO FO
- 540 IF I=F2 THEN GOTO 570
- 550 PRINT F$(I);": ";:INPUT "",F(I):IF F(I)>-1 AND F(I)<11 THEN GOTO 570 ELSE GOSUB 560:GOTO 550
- 560 PRINT "YOUR INPUT IS INVALID, TRY AGAIN.":RETURN
- 570 NEXT I
- 572 F(F2)=10:C=0
- 574 FOR I=1 TO FO:C=C+F(I):NEXT I
- 576 FOR I=1 TO FO:F(I)=F(I)/C:NEXT I
- 580 CLS:PRINT:PRINT "NOW CONSIDER HOW EACH ";S$
- 590 PRINT "RATES WITH RESPECT TO THESE FACTORS,":PRINT "INDIVIDUALLY CONSIDERED"
- 610 PRINT
- 620 PRINT "NOW LET'S ARBITRARILY ASSIGN":PRINT L$(1);" A FIXED VALUE OF 10."
- 630 PRINT "THEN EVERY OTHER ";S$
- 640 PRINT "MUST BE GIVEN A NUMBER HIGHER OR LOWER":PRINT "THAN 10 ACCORDING TO HOW MUCH BETTER"
- 650 PRINT "OR WORSE THAN ";L$(1):PRINT "YOU THINK IT IS."
- 660 FOR I=1 TO FO
- 665 IF I>1 THEN CLS
- 670 PRINT:PRINT "CONSIDERING ";F$(I);" ONLY,":PRINT "AND GIVEN THAT ";L$(1);" HAS A"
- 680 PRINT "VALUE OF 10, WHAT VALUE WOULD YOU GIVE":PRINT "TO EACH OF THE FOLLOWING:":PRINT
- 700 FOR J=2 TO LO
- 710 PRINT L$(J);": ";
- 712 INPUT "",M(J,I)
- 714 IF M(J,I)>=0 THEN GOTO 730
- 720 PRINT "C'MON. NO NEGATIVE NUMBERS!":GOTO 710
- 730 NEXT J
- 732 PRINT
- 734 NEXT I
- 735 M(1,I)=10
- 736 FOR I=1 TO FO
- 738 C=0
- 739 FOR J=1 TO LO
- 740 C=C+M(J,I)
- 742 NEXT J
- 744 FOR J=1 TO LO
- 745 M(J,I)=M(J,I)/C
- 746 NEXT J
- 748 NEXT I
- 750 FOR J=1 TO LO
- 752 V(J)=0
- 754 FOR I=1 TO FO
- 756 V(J)=V(J)+M(J,I)*F(I)
- 760 NEXT I
- 762 NEXT J
- 764 FOR I=1 TO 20:Z(I)=I:NEXT I
- 766 C=LO-1
- 768 FOR J=1 TO LO
- 770 FOR I=1 TO C
- 772 N1=Z(I)
- 774 N2=Z(I+1)
- 776 IF V(N1)>V(N2) THEN GOTO 790
- 780 Z(I+1)=N1
- 782 Z(I)=N2
- 790 NEXT I
- 792 NEXT J
- 795 C1=Z(1):C2=Z(2):C=100/V(C1)
- 800 FOR J=1 TO LO:V(J)=C*V(J):NEXT J
- 805 D=V(C1)-V(C2)
- 810 CLS:PRINT:PRINT:PRINT " WELL, YOUR BEST CHOICE SEEMS TO BE"
- 820 PRINT L$(C1);:IF D<10 THEN PRINT ", BUT IT'S PRETTY CLOSE."
- 830 IF D<20 AND D>=10 THEN PRINT " BY A FAIR MARGIN."
- 840 IF D>=20 THEN PRINT " BY A GOOD MARGIN."
- 850 PRINT:PRINT " HERE'S THE FINAL LIST WITH"
- 860 PRINT L$(C1);" GIVEN A VALUE OF 100":PRINT "AND THE OTHERS SET ACCORDINGLY."
- 870 PRINT:PRINT:PRINT "RATING",S$:PRINT
- 872 FOR J=1 TO LO
- 874 C=Z(J)
- 876 V(C)=INT(V(C)*100+0.5)/100
- 880 PRINT " ";V(C),L$(C):NEXT J
- 890 PRINT:PRINT "I LEAVE THE REST UP TO YOU.":PRINT "GOOD LUCK!":STOP
- 900 INPUT "IS THIS CORRECT (Y OR N)";A$
- 904 IF A$="y" THEN A$="Y"
- 906 IF A$="n" THEN A$="N"
- 908 RETURN
- 910 PRINT:PRINT "PLEASE USE A SHORTER PHRASE. THANKS.":RETURN
- 1000 PRINT "BASIC ERROR ";ERR;"IN LINE ";ERL:ON ERROR GOTO 0:STOP
-